package com.didd.core.redislock;

import java.lang.annotation.*;

/**
 * redis锁注解
 *
 * @author diddd
 * @Created 2020/5/15 16:16
 * @Target 此注解的作用目标，括号里METHOD的意思说明此注解只能加在方法上面
 * @Retention 注解的保留位置，括号里RUNTIME的意思说明注解可以存在于运行时，可以用于反射
 * @Documented 说明该注解将包含在javadoc中
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisLock {
    /**
     * 需要锁的业务参数 属性名
     *
     * @return
     */
    String paramFlied();

    /**
     * 是否抛出异常 ;false:返回 RpcResponse; true:向上抛出异常
     *
     * @return
     */
    boolean isThrowable() default false;

    /**
     * 是否重试
     *
     * @return
     */
    boolean retry() default false;

    /**
     * 获得锁最大时间 单位秒
     *
     * @return
     */
    long acquireTime() default 5;

    /**
     * 锁最大持续时间 单位秒
     *
     * @return
     */
    long expireTime() default 5;
}
